package com.dankegongyu.lib.common.util;

import androidx.annotation.DrawableRes;
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;

/**
 * Glide简单封装 http://blog.csdn.net/qq_26787115/article/details/52877997
 * 
 * Glide特点
 * 使用简单
 * 可配置度高，自适应程度高
 * 支持常见图片格式 Jpg png gif webp
 * 支持多种数据源  网络、本地、资源、Assets 等
 * 高效缓存策略    支持Memory和Disk图片缓存 默认Bitmap格式采用RGB_565内存使用至少减少一半
 * 生命周期集成   根据Activity/Fragment生命周期自动管理请求
 * 高效处理Bitmap  使用Bitmap Pool使Bitmap复用，主动调用recycle回收需要回收的Bitmap，减小系统回收压力
 * 这里默认支持Context，Glide支持Context,Activity,Fragment，FragmentActivity
 */
public class DKGlideUtil {

//    public static void loadImage(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).into(imageView);
//    }
//
//    /** 加载指定大小 */
//    public static void loadImage(Context context, String imageUrl, int width, int height, ImageView imageView) {
//        Glide.with(context).load(imageUrl).override(width, height).into(imageView);
//    }
//
//    /** 设置默认图片 */
//    public static void loadImage(Context context, String imageUrl, ImageView imageView, @DrawableRes int placeholderImageResId) {
//        Glide.with(context).load(imageUrl).placeholder(placeholderImageResId).into(imageView);
//    }
//
//    /** 设置加载中以及加载失败图片 */
//    public static void loadImage(Context context, String imageUrl, ImageView imageView, @DrawableRes int loadingImageResId, @DrawableRes int errorImageResId) {
//        Glide.with(context).load(imageUrl).placeholder(loadingImageResId).error(errorImageResId).into(imageView);
//    }
//
//    /** 设置加载中以及加载失败图片并且指定大小 */
//    public static void loadImage(Context context, String imageUrl, int width, int height, ImageView imageView, @DrawableRes int loadingImageResId, @DrawableRes int errorImageResId) {
//        Glide.with(context).load(imageUrl).override(width, height).placeholder(loadingImageResId).error(errorImageResId).into(imageView);
//    }
//
//    /** 设置跳过内存缓存 */
//    public static void loadImageSkipMemoryCache(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).skipMemoryCache(true).into(imageView);
//    }
//
//    /** 设置下载优先级 */
//    public static void loadImageWithPriority(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).priority(Priority.NORMAL).into(imageView);
//    }
//
//    /**
//     * 设置缓存策略
//     * all:缓存源资源和转换后的资源
//     * none:不作任何磁盘缓存
//     * source:缓存源资源
//     * result：缓存转换后的资源
//     */
//    public static void loadImageWithDiskCacheStrategy(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);
//    }
//
//    /** 设置加载动画，如crossFade() */
//    public static void loadImageWithAnim(Context context, String imageUrl, int anim, ImageView imageView) {
//        Glide.with(context).load(imageUrl).animate(anim).into(imageView);
//    }
//
//    /** 设置缩略图支持，会先加载缩略图 */
//    public static void loadImageWithThumbnail(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).thumbnail(0.1f).into(imageView);
//    }
//
//    /** 设置动态转换，如：centerCrop()、fitCenter()等 */
//    public static void loadImageCrop(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).centerCrop().into(imageView);
//    }
//
//    /** 设置动态GIF加载方式 */
//    public static void loadDynamicGif(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).asGif().into(imageView);
//    }
//
//    /** 设置静态GIF加载方式 */
//    public static void loadStaticGif(Context context, String imageUrl, ImageView imageView) {
//        Glide.with(context).load(imageUrl).asBitmap().into(imageView);
//    }
//
//    /** 设置监听的用处 可以用于监控请求发生错误来源，以及图片来源 是内存还是磁盘 */
//    public static void loadImageListener(Context context, String imageUrl, ImageView imageView, RequestListener<String, GlideDrawable> requestListener) {
//        Glide.with(context).load(imageUrl).listener(requestListener).into(imageView);
//    }
//
//    /** 项目中有很多需要先下载图片然后再做一些合成的功能，比如项目中出现的图文混排，设置要加载的内容 */
//    public static void loadImageContent(Context context, String imageUrl, SimpleTarget<GlideDrawable> simpleTarget) {
//        Glide.with(context).load(imageUrl).centerCrop().into(simpleTarget);
//    }
//
//    /**
//     * 加载圆形图片
//     */
//    public static void loadCircularImage(final Context context, String imageUrl, final ImageView imageView, @DrawableRes int placeholderImageResId) {
//        Glide.with(context).load(imageUrl).asBitmap().centerCrop().placeholder(placeholderImageResId).into(new BitmapImageViewTarget(imageView) {
//            @Override
//            protected void setResource(Bitmap resource) {
//                RoundedBitmapDrawable circularBitmapDrawable =
//                        RoundedBitmapDrawableFactory.create(context.getResources(), resource);
//                circularBitmapDrawable.setCircular(true);
//                imageView.setImageDrawable(circularBitmapDrawable);
//            }
//        });
//
//    }
//
//    /** 清理内存缓存 */
//    public static void clearMemory(Context context) {
//        // 可以在UI主线程中进行
//        Glide.get(context).clearMemory();
//    }
//
//    /** 清理磁盘缓存 */
//    public static void clearDiskCache(final Context context) {
//        // 需要在子线程中执行
//        new Thread(new Runnable() {
//            @Override
//            public void run() {
//                Glide.get(context).clearDiskCache();
//            }
//        }).start();
//    }
//
//    /** 获取Glide磁盘缓存大小 */
////    public String getCacheSize() {
////        try {
////            return getFormatSize(getFolderSize(new File(Application.getInstance().getCacheDir() + "/" + GlideCatchConfig.GLIDE_CARCH_DIR)));
////        } catch (Exception e) {
////            e.printStackTrace();
////            return "获取失败";
////        }
////    }
//
//    // 格式化单位
//    private static String getFormatSize(double size) {
//        double kiloByte = size / 1024;
//        if (kiloByte < 1) {
//            return size + "Byte";
//        }
//        double megaByte = kiloByte / 1024;
//        if (megaByte < 1) {
//            BigDecimal result1 = new BigDecimal(Double.toString(kiloByte));
//            return result1.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "KB";
//        }
//        double gigaByte = megaByte / 1024;
//        if (gigaByte < 1) {
//            BigDecimal result2 = new BigDecimal(Double.toString(megaByte));
//            return result2.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "MB";
//        }
//        double teraBytes = gigaByte / 1024;
//        if (teraBytes < 1) {
//            BigDecimal result3 = new BigDecimal(Double.toString(gigaByte));
//            return result3.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "GB";
//        }
//        BigDecimal result4 = new BigDecimal(teraBytes);
//        return result4.setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString() + "TB";
//    }
//
//    // 获取指定文件夹内所有文件大小的和
//    private long getFolderSize(File file) throws Exception {
//        long size = 0;
//        try {
//            File[] fileList = file.listFiles();
//            for (File aFileList : fileList) {
//                if (aFileList.isDirectory()) {
//                    size = size + getFolderSize(aFileList);
//                } else {
//                    size = size + aFileList.length();
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return size;
//    }
//
}